package com.itheima.leetcode.od.b.logicalsimulation;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <h3>求解连续数列</h3>
 * 已知连续正整数数列{K}=K1,K2,K3…Ki的各个数相加之和为S，i=N (0 < S < 100000, 0 <N <100000), 求此数列K。
 * <p>
 * 输入描述
 * <p>
 * 输入包含两个参数，1）连续正整数数列和S，2）数列里数的个数N。
 * <p>
 * 输出描述
 * <p>
 * 如果有解输出数列K，如果无解输出-1。
 * <p>
 * 示例1  输入输出示例仅供调试，后台判题数据一般不包含示例
 * <p>
 * 输入
 * <p>
 * 525 6
 * <p>
 * 输出
 * <p>
 * 85 86 87 88 89 90
 * <p>
 * 示例2  输入输出示例仅供调试，后台判题数据一般不包含示例
 * <p>
 * 输入
 * <p>
 * 3 5
 * <p>
 * 输出
 * <p>
 * -1
 */
public class ContinuousSequences {
    public static void main(String[] args) {
        // 处理输入
        /*Scanner in = new Scanner(System.in);
        int s = in.nextInt();
        int n = in.nextInt();*/

        int s = 525;
        int n = 6;
        System.out.println(getResult(s, n));
    }

    public static String getResult(int s, int n) {
        int num;
        List<Integer> result = new ArrayList<>();
        // 等差数列求和公式
        if (2 * s % n != 0) { // 不为整数
            return "-1";
        } else if ((2 * s / n - n) % 2 == 0) { // 不为整数
            return "-1";
        } else {
            num = (2 * s / n + 1 - n) / 2;
            for (int i = 0; i < n; i++) {
                result.add(num + i);
            }
            return result.stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(" "));
        }
    }
}